package route

import (
	"fmt"
	"github.com/gin-gonic/gin"
	// "gin-filestore/config"
	"gin-filestore/handler"
)

func Router() *gin.Engine {
	// 初始化配置
	fmt.Println("初始化配置...")
	// println("初始化配置...")
	// fmt.Printf("config:\t%+v\n", config.DefaultConfig)

	//gin framework,包括Logger,Recovery
	router := gin.Default()

	//处理静态资源
	router.Static("/static/", "./static")
	// 将静态文件打包到bin文件

	//不需要经过验证就能访问的接口
	// 注册
	router.GET("/user/signup", handler.SignUpHandler)
	router.POST("/user/signup", handler.DoSignUpHandler)

	// 登录
	router.GET("/user/signin", handler.SignInHandler)
	router.POST("/user/signin", handler.DoSignInHandler)

	//加入中间件，用于校验token的拦截器
	router.Use(handler.HTTPInterceptor())

	//Use之后的所有handler都会经过拦截器进行token校验
	// 用户查询
	router.POST("/user/info", handler.UserInfoHandler)

	// 文件存取接口
	router.GET("/file/upload", handler.UploadHandler)
	router.POST("/file/upload", handler.DoUploadHandler)

	router.GET("/file/upload/suc", handler.UploadHandler)
	router.POST("/file/meta", handler.GetFileMetaHandler)
	// 用户文件查询
	router.POST("/file/query", handler.FileQueryHandler)
	router.GET("/file/download", handler.DownloadHandler)
	// 用户文件修改(重命名)
	router.POST("/file/update", handler.FileMetaUpdateHandler)
	router.POST("/file/delete", handler.FileDeleteHandler)
	router.POST("/file/downloadurl", handler.DownloadURLHandler)

	// 秒传接口
	router.POST("/file/fastupload", handler.TryFastUploadHandler)

	// 分块上传接口
	router.POST("/file/mpupload/init", handler.InitialMultipartUploadHandler)
	router.POST("/file/mpupload/uppart", handler.UploadPartHandler)
	router.POST("/file/mpupload/complete", handler.CompleteUploadHandler)

	return router
}
